---
image: /generated/articles-docs-media-parser-readers.png
id: readers
title: Readers
slug: /media-parser/readers
crumb: '@remotion/media-parser'
---

:::warning
[We are phasing out Media Parser and are moving to Mediabunny](/blog/mediabunny)!
:::

import {ReadersTableOfContents} from './TableOfContents';

The [`parseMedia()`](/docs/media-parser) function takes a reader interface which defines how the source is being read.

The following reader interfaces are available:

<ReadersTableOfContents />

## Defaults

The default reader for [`parseMedia()`](/docs/media-parser/parse-media), [`parseAndDownloadMedia()`](/docs/media-parser/download-and-parse-media) and [`convertMedia()`](/docs/webcodecs/convert-media) is [`webReader`](/docs/media-parser/web-reader) and can be configured using the [`reader`](/docs/media-parser/parse-media#reader) field.

The default reader for [`parseMediaOnWebWorker()`](/docs/media-parser/parse-media-on-web-worker) is [`webReader`](/docs/media-parser/web-reader). It cannot be configured.

The default reader for [`parseMediaOnServerWorker()`](/docs/media-parser/parse-media-on-server-worker) is [`universalReader`](/docs/media-parser/universal-reader). It cannot be configured.

## Which reader should I choose?

If you are using [`parseMedia()`](/docs/media-parser/parse-media) on a backend runtime like Node.js or Bun, and are reading files from a local file path, you should use [`nodeReader`](/docs/media-parser/node-reader).

Otherwise, you should use [`webReader`](/docs/media-parser/web-reader). You don't need to explicitly specify it because it is the default.

## Custom readers

To create a custom reader, create an objet that satisfies the `MediaParserReaderInterface` type. To see a reference of it, look at the source code of any reader, which is linked at the bottom of it's documentation page.

:::note
The `MediaParserReaderInterface` type is not stable.
:::
